#ifndef FFMPEG_H
#define FFMPEG_H
#include <iostream>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/videodev2.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <cstring>
#include <vector>
#include <cerrno>

#include "rk_mpi.h"
#include "mpp_log.h"
#include "mpp_mem.h"
#include "mpp_time.h"
#include "mpp_common.h"
#include "mpp_buffer.h"
#include "mpp_frame.h"
#include "mpp_packet.h"
#include "mpp_enc.h"

extern "C" {
    #include <libavcodec/avcodec.h>
    #include <libavformat/avformat.h>
    #include <libavutil/imgutils.h>
    #include <libavutil/opt.h>
    #include <libswscale/swscale.h>
}
#define FPS 25
#define OUT_FILENAME "output.mp4"
#define BITRATE 4000000  // 4Mbps
int rkmpp_init(const char* filename);
int encode_and_write_frame(uint8_t* frame_data, int frame_count);
void mpp_cleanup(void);
int save_snapshot(uint8_t* frame_data, const char* filename);
#endif // FFMPEG_H
